package com.yuexunxinxi.carefree.utils;

import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestControllerAdvice;

import java.util.HashMap;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 作者: ChatGPT
 * 文件名: GlobalExceptionHandler.java
 * 路径: com.yuexunxinxi.carefree.utils
 * 时间: 2024-11-26 13:58
 * 版本: 1.0
 * 描述: TODO 通用异常返回类
 **/

@RestControllerAdvice
public class GlobalExceptionHandler {

    private static final Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);


    // 处理所有未捕获的异常
    @ExceptionHandler({Exception.class, NullPointerException.class})
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public R handleException(Exception e) {
        // 打印异常堆栈信息到控制台
        logger.error("An error occurred: ", e);
        // 或者打印堆栈信息
        //e.printStackTrace();

        HashMap<String, String> message = new HashMap<>();
        message.put(e.getClass().getName(), e.getMessage());
        return R.error("服务器内部错误，请联系管理员处理！").put("message", message);
    }
}
